package hangxingliu.java.yddictapi;

/**
 * 有道词典翻译单词的详细词典列表类
 * <br/>
 * 即可以告诉详细翻译方法,需要什么详细内容
 * 
 * @author VoyageLiu
 * @version 2.0
 */
public final class YdDetailedDictName {

	/**
	 * "柯林斯英汉双解大辞典" 的词典名称字符串常量
	 */
	public static final String DICT_COLLINS = "collins";
	
	/**
	 * "21世纪大英汉辞典" 的词典名称字符串常量
	 */
	public static final String DICT_21CENTURY = "ec21";
	
	/**
	 * "英英释义" 的词典名称字符串常量
	 */
	public static final String DICT_EE = "ee";
	
	/**
	 * "同根词" 的词典名称字符串常量
	 */
	public static final String DICT_COGNATE = "rel_word";
	
	/**
	 * "同近义词" 的词典名称字符串常量
	 */
	public static final String DICT_SYNONYM = "syno";
	
	/**
	 * "权威例句" 的词典名称字符串常量
	 */
	public static final String DICT_AUTH = "auth_sents_part";
	
	
	/**
	 * 存放需要查询的词典的名称
	 */
	private String[] dictNames = null;

	/**
	 * 获得名称时的指针
	 */
	private int getPoint = 0;
	
	/**
	 * 
	 * 构建一个只有一个详细内容词典的列表类
	 * @param dictName 词典名称常量
	 */
	public YdDetailedDictName(String dictName){
		this(new String[]{dictName});
	}
	
	/**
	 * 
	 * 构建一个多个详细内容词典的列表类
	 * @param dictNames 词典名称常量数组
	 */
	public YdDetailedDictName(String[] dictNames){
		this.dictNames = dictNames;
	}
	
	/**
	 * 初始化获取名称查询的指针
	 */
	public void initGet(){
		this.getPoint = 0;
	}
	
	/**
	 * @return 查询指针是否还有词典名称常量
	 */
	public boolean hadGetNext(){
		return !(this.getPoint == this.dictNames.length - 1);
	}
	
	/**
	 * @return 获得查询指针的所在的词典名称常量
	 */
	public String getNext(){
		return this.dictNames[this.getPoint++];
	}
	
	/**
	 * @return 返回词典名称常量数组的长度
	 */
	public int length(){
		return this.dictNames.length;
	}
	
	
	/**
	 * @return 返回一个有所有词典常量的列表类
	 */
	public static final YdDetailedDictName getAllDictName(){
		return new YdDetailedDictName(new String[]{
				DICT_21CENTURY,DICT_AUTH,DICT_COGNATE,DICT_COLLINS,DICT_EE,DICT_SYNONYM
		});
	}
}
